You are looking at the HTML representation of the XML format.
HTML is good for debugging, but is unsuitable for application use.
Specify the format parameter to change the output format.
To see the non HTML representation of the XML format, set format=xml.
See the complete documentation, or API help for more information.
<?xml version="1.0"?>
<api>
  <query>
    <pages>
      <page ns="0" title="API" missing="" />
      <page pageid="1" ns="0" title="Main Page">
        <revisions>
          <rev user="Fcorthay" timestamp="2022-09-02T06:13:29Z" comment="/* Triggered actions */" contentformat="text/x-wiki" contentmodel="wikitext" xml:space="preserve">The [http://en.wikipedia.org/wiki/XPL_Protocol xPL protocol]
allows different devices to exchange information in a simple manner.
The devices broadcast their messages to the others
and register to a hub in order to receive the messages sent by others.

The protocol is light enough to run on simple machines such as the [http://beagleboard.org BeagleBone]
or the [https://www.raspberrypi.org/ Raspberry Pi].
Some setup insructions show how to prepare a [[install BeagleBone|BeagleBone]] or a [[install Raspberry Pi|Raspberry Pi]] to use with xPL.
A [[SBC comparison|comparison]] of different single-board computers gives an idea of speed and power consumption issues.

The hub and the devices can be installed on different [http://xplproject.org.uk/wiki/index.php/Development_Tools platforms].
The system shown here run with [http://www.perl.org Perl],
which is part of the Linux and Mac OS operating systems and can easily be installed on Windows.
It is based on John Bent's [http://johnb.xplproject.org.uk/info/perl/ xPL ToolKit for Perl].

= Install xPL =

== Hub ==

The first step to xPL automation is to [[install xpl hub|install a hub]].

This has to be done on each machine that participates to the xPL network.

== Serial port ==

Many devices are controlled over an [http://en.wikipedia.org/wiki/RS-232 RS-232] serial port.

For this, the [[install serial port|xPL serial port device]] can be instantiated as many times as needed.
The xPL infrastructure supports this by the fact that these devices are differentiated by their name.

== Audio alerts ==

In the same way as your PC, your home wants to alert you from time to time.

For this, the [[install alert|xPL alert device]] can emit alert sounds.
This can fro example be [[install central| triggered by other xPL messages]].

== Controlled equipment ==

The xPL scripts found here allow to control:
* [[install EIB|EIB / KNX devices]] such as lights, shutters, …
* [[install myStrom|myStrom devices]] such as buttons, lights, …
* Ethernet [[install switches|controlled switches]]
* a [http://wiki.slimdevices.com/ Logitech Media Server]  [[install squeeze|controller]]
* Philips Hue [[install Hue|LED light bulbs]] control and a [[install Hue clock|time display]] using 2 bulbs: one for the hour and one for the minute
* a Denon [[install AVR 3808|audio-video controller]]
* a Sony Bravia [[install Bravia|Android TV]] or a Panasonic [[install plasma TH|plasma screen]]

Additionally, a [[install Canvas|picture display]] service on high-resolution monitors and screens
hosted on a [https://www.raspberrypi.org/ Raspberry Pi] can turn the living room into a little museum.

== Triggered actions ==

An xPL device sends [[install clock|clock ticks]] every minute.
A xPL [[install dawnDusk|dawnDusk device]] sends messages at dawn and at dusk.

TBD - A [https://www.raspberrypi.org/ Raspberry Pi] based device sends [[install meteo|meteorologic information]] every minute.

A [[install central|central xPL device]] monitors all the messages and is configured to trigger specific actions on specific messages.
This allows:
* to update the information about the [[install state|state of the home]] (lights, music, …)
* to [[install actions|launch scripts]] at given times or on specific events

A connection to [https://signal.org/ signal] allows [[install Signal|remote controls via messages]].

TBD - The location of the personal mobile phone can be used to trigger actions, such as opening the garage door.
A [[install phoneDistance|distance calculator]] sends xPL messages on any receipt of a [http://www.gpsinformation.org/dale/nmea.htm#position NMEA position message].

= RESTful web service =
A [http://en.wikipedia.org/wiki/Representational_state_transfer#RESTful_web_APIs RESTful] web service
allows to [[install REST|query and modify the state of the home]] using HTTP methods.

It works in conjunction with the [[install state|home state]] xPL device.

= Browser control =

An [[Install HTML|HTML web page]] can also be used to control the home.

It works in conjunction with a [https://en.wikipedia.org/wiki/Common_Gateway_Interface CGI script] capable of sending xPL messages.
This implies to [[Install HTML#Install a web server|install a web server]] on a machine in the same local domain as the xPL system.

Obviously, the  [[Install HTML|home control pages]] have to be tailored to the user's wishes.
These pages, in turn, can be generated by a CGI script, based on an [https://en.wikipedia.org/wiki/XML XML] description of the buttons and their associated commands.

= Moving xPL services =

Movng services require to stop them on a given device and starting them on another.

Stop a service on a given device:
 su
 ll /lib/systemd/system/xpl-*
 systemctl list-units --type=service --state=running | grep xpl
 SERVICE='xpl-central'
 
 SERVICE_DEFINITION=&quot;/lib/systemd/system/$SERVICE&quot;
 reset
 echo -e &quot;\n$SERVICE_DEFINITION.service\n&quot;
 echo ; cat $SERVICE_DEFINITION.service ; echo
 systemctl stop $SERVICE
 systemctl disable $SERVICE
 
 SERVICE_SCRIPT=&quot;/home/control/Documents/Controls/$SERVICE.pl&quot;
 reset
 echo -e &quot;\n$SERVICE_SCRIPT\n&quot;
 echo ; cat $SERVICE_SCRIPT ; echo
 
 reboot

Start it on the other machine:
 su
 SERVICE='xpl-central'
 
 SERVICE_DEFINITION=&quot;/lib/systemd/system/$SERVICE&quot;
 ed $SERVICE_DEFINITION.service
 
 SERVICE_SCRIPT=&quot;/home/control/Documents/Controls/$SERVICE.pl&quot;
 ed $SERVICE_SCRIPT
 
 chmod 775 $SERVICE_SCRIPT
 chown control:users $SERVICE_SCRIPT
 systemctl enable $SERVICE
 systemctl status $SERVICE

= Contact =

My name is Francois Corthay.
I teach [http://wiki.hevs.ch/fsi/ digital electronics] in an [http://www.hevs.edu/ engineering school] in Switzerland.
If you have problems installing xPL, you can contact me at &lt;i&gt;my_first_name&amp;#46;my_surname&lt;/i&gt;&amp;#64;dspc.ch.

[[Category: all]]</rev>
        </revisions>
      </page>
    </pages>
  </query>
</api>